#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;

int main()
{
  pid_t id = fork();
  if (id == 0){
    // child
    sleep(3);
    execlp("ls", "ls", "-al", NULL);
    exit(1);
  }
  else if (id  < 0){
    perror("fork error");
    return 1;
  }

  // parent
  pid_t ret = waitpid(id, NULL , 0);
  if (ret > 0){
    printf("cmd run done...\n");
  }
  return 0;
}

//int main()
//{
//  printf("I am a process:%d\n", getpid());
//  // int ret = execl("/usr/bin/ls", "ls", "-a", "-l",  NULL); // 需要添加相对路径或者绝对路径
//  //int ret = execlp("ls", "ls", "-a", "-l"  NULL);// p 自动搜索环境变量PATH
//  //int ret = execlp("ls", "ls", "-al",  NULL);// p 自动搜索环境变量PATH
//  char* const arg[] = {
//    "ls",
//    "-a",
//    "-l",
//    NULL
//  };
//  
//  //execv("/usr/bin/ls", arg);
//  //execvp("ls", arg);
//  char* const MY_ENV[] = {"myenv=you can see me", NULL};
//  execle("./mycmd", "mycmd", NULL, MY_ENV);
//  printf("you should run here...\n");
//  return 0;
//}
